
#ifndef __ui_base_message_box_flags_h__
#define __ui_base_message_box_flags_h__

#pragma once

#include "base/basic_types.h"

namespace ui
{

    // This class contains flags used to communicate the type of message box
    // to show.  E.g., the renderer can request the browser to show a
    // javascript alert or a javascript confirm message.
    class MessageBoxFlags
    {
    public:
        static const int kFlagHasOKButton = 0x1;
        static const int kFlagHasCancelButton = 0x2;
        static const int kFlagHasPromptField = 0x4;
        static const int kFlagHasMessage = 0x8;

        // The following flag is used to indicate whether the message's alignment
        // should be autodetected or inherited from Chrome UI. Callers should pass
        // the correct flag based on the origin of the message. If the message is
        // from a web page (such as the JavaScript alert message), its alignment and
        // directionality are based on the first character with strong directionality
        // in the message. Chrome UI strings are localized string and therefore they
        // should have the same alignment and directionality as those of the Chrome
        // UI. For example, in RTL locales, even though some strings might begin with
        // an English character, they should still be right aligned and be displayed
        // Right-To-Left.
        //
        // TODO(xji): If the message is from a web page, then the message
        // directionality should be determined based on the directionality of the web
        // page. Please refer to http://crbug.com/7166 for more information.
        static const int kAutoDetectAlignment = 0x10;

        static const int kIsConfirmMessageBox = kFlagHasMessage |
            kFlagHasOKButton | kFlagHasCancelButton;
        static const int kIsJavascriptAlert = kFlagHasOKButton | kFlagHasMessage;
        static const int kIsJavascriptConfirm = kIsJavascriptAlert |
            kFlagHasCancelButton;
        static const int kIsJavascriptPrompt = kIsJavascriptConfirm |
            kFlagHasPromptField;

        // Dialog button identifiers used to specify which buttons to show the user.
        enum DialogButton
        {
            DIALOGBUTTON_NONE = 0,    // No dialog buttons, for WindowType == WINDOW.
            DIALOGBUTTON_OK = 1,      // Has an OK button.
            DIALOGBUTTON_CANCEL = 2,  // Has a Cancel button (becomes a Close button if
        };                            // no OK button).

    private:
        MessageBoxFlags() {}
        DISALLOW_COPY_AND_ASSIGN(MessageBoxFlags);
    };

} //namespace ui

#endif //__ui_base_message_box_flags_h__